﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace oneday
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region //**基本数据类型 * *
            ////**基本数据类型 * *

            ////1.变量和运算符
            //int age = 10;
            //double alar = 5000.50;
            //string name = "张三";
            //bool isStudent = true;
            //char letter = 'a';

            ////隐式转换
            //double ageDouble = age;//int 转换为 double

            ////显示转换
            //int salaryInt = (int)alar;//double 转换为 int

            ////使用 Convert 类
            //string input = "123";
            //int number = Convert.ToInt32(input);//字符串转换为整数类型
            #endregion
            #region
            #endregion

            #region //运算符
            ////运算符
            //int a = 10;
            //int b = 3;

            ////算数运算
            //int sum = a + b;//13
            //int difference = a - b;//7
            //int product = a * b;//30
            //double quotient = a / (double)b;//3.333333333
            //int remainder = a % b;//1

            ////比较运算
            //bool isEqual = a == b;//false
            //bool isNotEqual = a != b;//true
            //bool isGreater = a > b;//true
            //bool isLess = a < b;//false

            ////逻辑运算
            //bool isTrue = true;

            //bool isfalse = false;
            //bool result = isTrue && isfalse;//false
            //bool result2 = isTrue || isfalse;//true
            //bool result3 = !isTrue;//false

            ////赋值运算
            //a += 5;//a=a+5--a=15
            //a -= 5; //a=a-5 --a=10
            //a *= 5;//a=a*5  a=50
            //a /= 5;//a=a/5  a=10
            //a %= 3;//a=a%3  a=1
            #endregion

            #region 条件语句**
            ////-**`if-else`语句 * *：用于简单的条件判断。
            ////-**`switch-case`语句 * *：用于多条件判断。
            //int score = 85;
            //if (score >= 90)
            //{
            //    Console.WriteLine("优秀");

            //}
            //if (score >= 80)
            //{

            //    Console.WriteLine("良好");

            //}
            //else
            //{
            //    Console.WriteLine("不及格");
            //}


            //int day = 3;
            //switch (day)
            //{
            //    case 1:
            //        Console.WriteLine("是1");
            //        break;
            //    case 2:
            //        Console.WriteLine("是2");
            //        break;
            //    case 3:
            //        Console.WriteLine("是3");
            //        break;
            //}


            #endregion

            #region 循环语句**
            //-**`for`循环 * *：用于已知循环次数的循环。
            //-**`while`循环 * *：用于未知循环次数的循环。
            //-**`foreach`循环 * *：用于遍历集合。

            //for (int i = 0; i < 10; i++)
            //{
            //    Console.WriteLine("for  现在是第-- " + i);
            //}


            //int cunt = 0;
            //while (cunt < 10)
            //{
            //    Console.WriteLine("  while   现在是第-- " + cunt);
            //}

            //string[] fruits = { "第一个", "第二个", "第三个" };
            //foreach (string fruit in fruits)
            //{
            //    Console.WriteLine("  while   现在是 " + fruit);
            //}
            #endregion

            #region 方法（函数）

            //-**方法的定义与调用 * *：
            //  -方法的签名（返回类型、方法名、参数列表）。
            //  -方法体。
            //-**参数传递 * *：
            //  -**值传递 * *：传递变量的值。
            //  -**引用传递 * *：传递变量的引用（`ref`/`out`）。
            //-**方法重载 * *：同名方法，参数不同。
            //  int Add(int aq, int bq)
            //{
            //    return aq + bq;
            //}

            //// //方法调用
            // int sumaaa = Add(3, 5);
            //Console.WriteLine("Add结果{0}", sumaaa);

            //// // 引用传递
            // void Swap(ref int x, ref int yy)
            //{
            //    int temp = x;
            //    x = yy;
            //    yy = temp;
            //}

            // int q = 10, y = 20;
            //Console.WriteLine("q={0}--y={1}", q,y);
            //Swap(ref q, ref y);
            //Console.WriteLine("交换后q={0}--y={1}", q, y);




            //方法重载

            //void Swap(ref int yy, ref string x)
            //{
            //    string  temp = x;

            //}
            #endregion

            #region  字符串
            //// 字符串拼接
            //string name = "张三";
            //int age = 20;
            //string message = "大家好，我叫" + name + "，今年" + age + "岁。";
            //Console.WriteLine(message);

            //// 字符串格式化
            //string message2 = string.Format("大家好，我叫{0}，今年{1}岁。", name, age);
            //Console.WriteLine(message2);
            //// 使用插值字符串
            //string message3 = $"大家好，我叫{name}，今年{age}岁。";
            //Console.WriteLine(message3);
            //// 使用 StringBuilder主要用于需要 频繁修改字符串 的场景
            ////string 类型是不可变的，这意味着每次修改字符串（如拼接、裁剪等操作）
            ////都会创建一个新的字符串实例，这会导致频繁的内存分配和垃圾回收，从而影响性能。
            //System.Text.StringBuilder sb = new System.Text.StringBuilder();
            //sb.Append("大家好，");
            //sb.Append("我叫张三，");
            //sb.Append("今年20岁。");
            //Console.WriteLine(sb.ToString());
            #endregion

            #region  集合
            //-**`List < T >`**：动态数组，支持添加、删除和查找元素。
            //-**`Dictionary < TKey, TValue >`**：键值对集合，支持通过键快速查找值。
            //-**`Queue < T >`**：先进先出的队列。
            //-**`Stack < T >`**：后进先出的栈。

            //// 使用 List<T>
            //List<int> numbers = new List<int>{1, 2, 3, 4, 5};
            //numbers.Add(6);// 添加元素
            //numbers.RemoveAt(0);// 删除指定索引的元素
            //numbers.RemoveAt(numbers.IndexOf(3));// 删除指定值的元素
            //foreach(int i in numbers)
            //{
            //    Console.WriteLine(i);
            //}

            //// 使用 Dictionary<TKey, TValue>
            //Dictionary<string, int> ages = new Dictionary<string, int>
            //{
            //    {"张三",20 },
            //    {"李四",25 }
            //};
            //Console.WriteLine(ages["张三"]);
            //Console.WriteLine(ages["李四"]);

            //// 使用 Queue<T>：先进先出的队列。
            //Queue<string> queue = new Queue<string>();
            //queue.Enqueue("张三");
            //queue.Enqueue("李四");
            //Console.WriteLine(queue.Dequeue());// 弹出首个加入的元素

            //// 使用 Stack<T>后进先出的栈。
            //Stack<string> stack = new Stack<string>();
            //stack.Push("张三");
            //stack.Push("李四");
            //Console.WriteLine(stack.Pop());// 弹出最后加入的元素
            #endregion

            #region  文件操作**
            //##### **知识点**：
            //-**文件读取 * *：使用 `File.ReadAllText` 或 `StreamReader`。
            //-**文件写入 * *：使用 `File.WriteAllText` 或 `StreamWriter`。
            //-**目录操作 * *：使用 `Directory` 类。

            //// 写入文件
            //// 定义要写入文件的内容
            //string content = "这是测试内容";

            //// 定义文件路径（桌面的 test.txt 文件）
            //string path = "C:\\Users\\zldzz\\Desktop\\test.txt";

            // 使用 File.WriteAllText 方法将内容写入文件
            // 注意：此方法会覆盖文件的原有内容，请谨慎使用
            // File.WriteAllText(path, content); // 覆盖写入

            // 修改为追加写入（如果需要追加内容，可以使用 File.AppendAllText）
            // 然而，当前代码中并没有使用追加写入，这里可能存在代码错误
            // 例如：
            // File.AppendAllText(path, content); // 追加写入
            // 但代码中实际调用的是 WriteAllText，这会覆盖文件内容
            // 所以正确的追加写入需要使用 File.AppendAllText
            //System.IO.File.WriteAllText(path, content); // 覆盖写入

            //// 读取文件
            //// 使用 File.ReadAllText 方法从指定路径的文件中读取所有文本内容
            //string redacontent = System.IO.File.ReadAllText(path);

            //// 将读取到的内容输出到控制台
            //Console.WriteLine(redacontent);

            //// 创建目录
            //// 定义要创建的目录路径
            //string directoryPath = "testDir";

            //// 检查目录是否存在，如果不存在则创建
            //if (!System.IO.Directory.Exists(directoryPath))
            //{
            //    System.IO.Directory.CreateDirectory(directoryPath);
            //}
            #endregion
            // 第一天上午

            //Class1 class1 = new Class1();
            //**编写一个方法，判断一个数是否是偶数**
            //bool a = class1.isEven(5);
            //Console.WriteLine(a);


            //**用`for`循环计算1到100的和 * *
            //int sum =class1.Sum();
            //Console.WriteLine($"1到100的和：{sum}");

            //**编写一个程序，输入一个数字，判断它是正数、负数还是零**
            //class1.jusdf(0);


            // **编写一个程序，打印1到10之间的所有偶数**
            //class1.print();




            //第一天下午
            //Student student = new Student("张三",18);
            //student.Introduce();

            // 定义一个动物基类
            // 测试多态
            //Animal dog = new Dog("狗");
            //dog.Speak();

            //// 使用接口
            //ILogger logger = new FileLogger();
            //logger.Log("错误");

            //单元测试

            //Class111 class111= new Class111();
            //class111.Maina();


            Console.ReadLine();
        }



    }


    public static class a
    {
        #region 方法（函数）

        //-**方法的定义与调用 * *：
        //  -方法的签名（返回类型、方法名、参数列表）。
        //  -方法体。
        //-**参数传递 * *：
        //  -**值传递 * *：传递变量的值。
        //  -**引用传递 * *：传递变量的引用（`ref`/`out`）。
        //-**方法重载 * *：同名方法，参数不同。
       // public static int Add(int a, int b)
       // {
       //     return a + b;
       // }

       // //方法调用
       // static int sumaaa = Add(3, 5);
       // // Console.WriteLine($"3 + 5 = {sum}");

       // // 引用传递
       // static void Swap(ref int x,ref int y)
       // {
       //     int temp = x;
       //     x = y;
       //     y = temp;
       // }
       //static int q = 10,y = 20;

       // Swap(ref q,ref y);


        #endregion
    }

}
